importPackage(Packages.de.elo.ix.client);
//@include lib_Class.js
//@include lib_sol.common.SordUtils.js
//@include lib_sol.common.AclUtils.js
//@include lib_sol.common.AsyncUtils.js
//@include lib_sol.common.Map.js
//@include lib_sol.common.ix.DynAdHocFlowUtils.js
//@include lib_sol.common.ix.FunctionBase.js
var logger = sol.create("sol.Logger", { scope: "sol.common.ix.functions.CheckDynAdHocFlowEnd" });
/**
* Checks wether the dynamic ad-hoc worflow cycle should be existed
*
* This function module checks whether there is a next user defined in the workflow map of the given object
* respectively the workflow status was set to 'CANCELED' or 'REJECTED'.
* In this case the worklow cycle will be left.
*
* The function can only be used as a workflow start script of a cycle end node.
*
* @author MW, ELO Digital Office GmbH
* @version 1.0
*
* @eloix
*
* @requires sol.common.WfUtils
* @requires sol.common.WfMap
* @requires sol.common.MapTable
* @requires sol.common.ix.FunctionBase
* @requires sol.common.ix.DynAdHocFlowUtils
*
*/
sol.define("sol.common.ix.functions.CheckDynAdHocFlowEnd", {
extend: "sol.common.ix.FunctionBase",
requiredConfig: ["wfDiagram"],
/**
* @cfg {de.elo.ix.client.WFDiagram} wfDiagram (required)
* The WFDiagram to which the changes should me applied to
*/
initialize: function (config) {
var me = this;
me.params = config;
me.$super("sol.common.ix.FunctionBase", "initialize", [config]);
},
wfStatusCanceledValues: ["CANCEL", "CANCELED", "REJECT", "REJECTED"],
/**
* Performs the check whether the dynamic ad-hoc workflow should be left
* @return {Boolean}
*/
process: function () {
var me = this,
wfStatus,
result = true;
wfStatus = sol.common.WfUtils.getWorkflowStatus(me.wfDiagram);
if (me.wfStatusCanceledValues.indexOf(wfStatus) > -1) {
return false;
}
sol.common.ix.DynAdHocFlowUtils.clearCurrentUser(me.wfDiagram.id, me.wfDiagram.objId, me.params);
if (!sol.common.ix.DynAdHocFlowUtils.hasNextUser(me.wfDiagram.id, me.wfDiagram.objId, me.params)) {
return false;
}
return result;
}
});
/**
* @member sol.common.ix.functions.CheckDynAdHocFlowEnd
* @static
* @inheritdoc sol.common.ix.FunctionBase#onEnterNode
*/
function onEnterNode(clientInfo, userId, wfDiagram, nodeId) {
logger.enter("onExitNode_CheckDynAdHocFlowEnd", { flowId: wfDiagram.id, nodeId: nodeId });
var params = sol.common.WfUtils.parseAndCheckParams(wfDiagram, nodeId),
module, result;
params.wfDiagram = wfDiagram;
module = sol.create("sol.common.ix.functions.CheckDynAdHocFlowEnd", params);
result = module.process();
logger.exit("onExitNode_CheckDynAdHocFlowEnd");
return result;
}
/* ____
* ___ .-~ '.
* `-._~-. / / ~@\ )
* \ \ | / \~\. `\
* ] | / | |< ~\(..)
* / ! _.--~T \ \< .,,
* / / ____.--~ . _ /~\ \< /
* / / .-~~' /| /o\ /-~\ \_|
* / / / ) |o| / /|o/_ '--'
* / / .-'( l__ _j \_/ / /\|~ .
* / l / \ ~~~| `/ / / \.__/l_
* | \ _.-' ~-\__ l /_/~-.___.--~
* | ~---~ / ~~'---\_ __[o,
* l . _. ___ _>-/~
* \ \ . .-~ .-~ ~>--' /
* \ ~---' / _.-'
* '-.,_____.,_ _.--~\ _.-~
* ~~ ( _}
* `. ~(
* ) \ DYNADHOC SAURUS, the
* /,`--'~\--'~\
* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
*
*/